<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1. 原型 ：显示原型 构造函数   隐式原型是对象的；
        // 不管是显示原型还是隐式原型 都是对象类型；

        // function Perosn(){
        //     this.name = "张三";
        // }
        // console.log(typeof Perosn.prototype);

        // let obj = {
        //     name:"张三"
        // }

        // console.log(typeof obj.__proto__);


        // 原型是对象  ，每个对象又会有隐式原型 ------》Object.prototype
        // console.log(Object.prototype.prototype);


        //2. 一个对象有自身和原型链上的内容共同构成 ；
        // 给所有的对象的原型上都加上了age；
        // for in 循环会循环原型链上的所有内容；
        // Object.prototype.age = 20;

        // let obj = {
        //     name:"张三"
        // }

        // Object.setPrototypeOf(obj,{
        //     height:"178cm"
        // })

        // // console.log(obj);
        // // console.log(obj.name);
        // // console.log(obj.height);
        // // console.log(obj.age);

        // for(let key in obj){
        //     console.log(key);
        // }

        // 3.判断某个对象 在原型链上是否和某个构造函数有关系；instanceof
        // instanceof： 这个对象 和原型链上的构造函数是否有关系；

        // function Person(){
        //     this.name = "张三";
        // }

        // let zhangsan = new Person();
        // console.log(zhangsan instanceof Person);
        // console.log(zhangsan instanceof Object);

        // let arr = new Array();
        // let obj = {};
        // // console.log(obj instanceof Object);
        // console.log(arr instanceof Array);


        // 4.原型链上的查找规则 ；就近原则 ；
        // 如果遇到相同的属性和方法 先会查找自身 ，然后再查找原型 ，最后再查找原型链 ，如果都没找到 就返还undefined；
            // let obj = {
            //     age:20
            // }
            // Object.setPrototypeOf(obj,{age:30});
            // Object.prototype.age = 40;

            // console.log(obj.age);

            // function Person(){
            //     // this.age = 20;
            // }

            // // Person.prototype.age = 30;


            // let zhangsan = new Person();
            // console.log(zhangsan.age);



    </script>
</body>
</html>